package fr.efrei.musicpliz.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
import javax.persistence.Transient;

@Entity
@DiscriminatorValue(value="compteArtistique")
@SuppressWarnings("serial")
public class CompteArtistique extends Compte {

	private String typeMusique;

	private String instrument;

	private String material;

	private Integer ptsExp;

	private Integer prixHeure;

	private Integer prixEncheres;

	@OneToMany(mappedBy = "artiste", cascade = CascadeType.ALL)
	private List<Morceau> morceaux;

	@OneToMany(mappedBy = "artiste", cascade = CascadeType.ALL)
	private List<Video> videos;

	public CompteArtistique() {
		// Empty constructor (for example for generic search)
	}

	public CompteArtistique(String nom, String adresse, int codePostal,
			String ville, String numero, String typeMusique, String instrument,
			String material, String mail, String password, Date naissance,
			int ptsExp, int prixHeure, int prixEncheres) {
		super(nom, adresse, codePostal, ville, numero, mail, password,
				naissance);

		this.typeMusique = typeMusique;
		this.instrument = instrument;
		this.material = material;
		this.ptsExp = ptsExp;
		this.prixHeure = prixHeure;
		this.prixEncheres = prixEncheres;
		
		morceaux = new ArrayList<Morceau>();
		videos = new ArrayList<Video>();
	}

	public String getTypeMusique() {
		return typeMusique;
	}

	public void setTypeMusique(String typeMusique) {
		this.typeMusique = typeMusique;
	}

	public String getInstrument() {
		return instrument;
	}

	public void setInstrument(String instrument) {
		this.instrument = instrument;
	}

	public String getMaterial() {
		return material;
	}

	public void setMaterial(String material) {
		this.material = material;
	}

	public int getPtsExp() {
		return ptsExp;
	}

	public void setPtsExp(int ptsExp) {
		this.ptsExp = ptsExp;
	}

	public int getPrixHeure() {
		return prixHeure;
	}

	public void setPrixHeure(int prixHeure) {
		this.prixHeure = prixHeure;
	}

	public int getPrixEncheres() {
		return prixEncheres;
	}

	public void setPrixEncheres(int prixEncheres) {
		this.prixEncheres = prixEncheres;
	}

	public List<Morceau> getMorceaux() {
		return morceaux;
	}

	public void setMorceaux(List<Morceau> morceaux) {
		this.morceaux = morceaux;
	}

	public List<Video> getVideos() {
		return videos;
	}

	public void setVideos(List<Video> videos) {
		this.videos = videos;
	}

	@Transient
	@Override
	public String getCompteString() {
		return "CompteArtistique";
	}
}
